package com.ketangpai.admin.service;

import com.ketangpai.admin.entity.User;
import com.ketangpai.admin.entity.UserCourse;
import com.ketangpai.admin.entity.dto.*;
import com.ketangpai.admin.entity.param.UserAddCourseParam;
import com.ketangpai.admin.entity.param.UserCourseParam;
import com.ketangpai.admin.utils.JsonResult;

import java.util.List;
import java.util.Map;

/**
 * 用户与课程(UserCourse)表服务接口
 *
 * @author makejava
 * @since 2023-06-14 01:14:11
 */
public interface UserCourseService  {

    /**
     * 通过ID查询单条数据
     */
    List<UserCourse> queryByCid(Integer id);

    /**
     *查询教师数据
     */
    Map<String, Object> getTeacher(UserCourseParam param);


    UserCourseDTO getUserCourse(UserCourseParam param);


    UserCourseDTO getUser(UserCourseParam param);
    /**
     * 查询教师数据
     */
    List<CourseDTO> getTopClassById(Integer id);
    /**
     * 查询归档数据
     */
    UserGetDivideClass getPigeonholeClass(Integer id);

    /**
     * 通过课程ID查询单条数据
     */
    Map<String, Object>  getUserByCid(Integer cid);

    Map<String, Object>  getUserByCidAndType(Integer cid,Integer type);

    /**
     * 分页查询
     */
    Map<String,Object> selectList(UserCourseParam param);
    /**
     * 通过课程ID查询学生用户人数
     */
    Integer getStuNumByCid(Integer id);
    /**
     * 新增数据
     */
    boolean insert(UserCourse userCourse);

    /**
     * 修改数据
     */
    boolean update(UserCourse userCourse);
    boolean insertAssist(UserCourse userCourse);

    boolean placeToFile(Integer cid);
    /**
     * 通过学生id和课程id删除数据
     */
    boolean deleteById(UserCourseParam userCourseParam);
    boolean deleteTeachById(UserCourseParam userCourseParam);
    void getStuNum();
    /**
     *取消置顶
     */
    boolean unTopById(UserCourseParam courseParam);
    /**
     *置顶
     */
    boolean topById(UserCourseParam courseParam);
    /**
     *添加课程
     */
    JsonResult<?> addClass(UserAddCourseParam userAddCourseParam);


    List<UserGetAllClassDTO> getLearnClass(Integer id);

    List<UserGetAllClassDTO> getTeachClass(Integer id);

    List<UserGetAllClassDTO> getAssistClass(Integer id);

    User getUserInfo(Integer id);


    boolean pigeonholeClass(UserCourseParam courseParam);
    List<UserGetAllClassDTO> getAllClass(Integer id);

    UserGetDivideClass searchNormalClass(UserCourseParam userCourseParam);
    UserGetDivideClass searchPigeonholeClass(UserCourseParam userCourseParam);

    Boolean createClass(CourseDTO course);

    Boolean editClass(CourseDTO course);

    boolean unPigeonholeClass(UserCourseParam courseParam);

    List<User> getStudent(UserCourseParam courseParam);
}
